#pragma once

namespace Physics
{
	class CollisionSkin;

	class Body
	{
	public:
		Body();
		~Body();

		CollisionSkin* getSkin() { return mSkin; }
		void setSkin(CollisionSkin* v) { mSkin = v; }

		bool getBodyEnabled() const {return mBodyEnabled;}

		bool getActived() const { return mActived; }
		void setActived(bool v) { mActived = v; }

		bool getImmovable() const { return mImmovable; }
		bool setImmovable(bool v) { mImmovable = v; }
		
		void EnableBody();
		void DisableBody();

		void SetTransform(const Transform3 &t) {mTransform = t;}
		const Transform3 &GetTransform() const {return mTransform;}

		void SetPosition(const Vector3 & pos) {mTransform.Position = pos; }
		const Vector3 & GetPosition() const { return mTransform.Position; }

		void SetOrientation(const Matrix3 & orient) { mTransform.Orientation = orient; }
		const Matrix3 & GetOrientation() const { return mTransform.Orientation; }

	private:
		CollisionSkin* mSkin;
		bool mBodyEnabled;
		bool mActived;
		bool mImmovable;
		Transform3 mTransform;
	};
};
